Skip to content

Bump RecursiveArrayTools / SciMLBase compat to include v4 / v3#361

Merged
ChrisRackauckas merged 1 commit intoSciML:mainfrom
ChrisRackauckas-Claude:bump-rat-v4-scimlbase-v3
Apr 22, 2026
Merged

Bump RecursiveArrayTools / SciMLBase compat to include v4 / v3#361
ChrisRackauckas merged 1 commit intoSciML:mainfrom
ChrisRackauckas-Claude:bump-rat-v4-scimlbase-v3

Conversation

@ChrisRackauckas-Claude
Copy link
Copy Markdown
Contributor

Summary

Widen the weak-dep compat so ComponentArrays can load alongside the RAT v4 / SciMLBase v3 stack that ships with OrdinaryDiffEq v7:

  • RecursiveArrayTools: "3.8""3.8, 4"
  • SciMLBase: "2""2, 3"

Version bump 0.15.36 → 0.15.37.

Why this is source-level safe

ext/ComponentArraysRecursiveArrayToolsExt.jl

Single method: Base.Array(VA::AVOA{T, N, <:AbstractVector{<:ComponentVector}}) that only touches VA.u / getaxes(VA.u[1]) / reduce(hcat, VA.u). None of those are affected by the RAT v4 AbstractVectorOfArray <: AbstractArray change — that change rebinds top-level sol[i] / length(sol) / eachindex(sol) / iterate(sol) semantics, but the underlying .u field stays a plain Vector and behaves identically.

ext/ComponentArraysSciMLBaseExt.jl

Defines SciMLBase.getsyms(sol::AbstractODESolution{T, N, <:AbstractVector{<:ComponentArray}}) and calls SciMLBase.has_syms(sol.prob.f) + sol.prob.f.syms. Both getsyms and has_syms remain present on SciMLBase v3 (verified against src/symbolic_utils.jl + src/scimlfunctions.jl on master). The f.syms field is still on AbstractSciMLFunction subtypes — only the syms / paramsyms / indepsym kwargs on the SciMLFunction constructors were removed in v3, not the fields themselves.

Motivation

On SciML/OrdinaryDiffEq.jl#3488 (the v7 release branch), test (OrdinaryDiffEqDifferentiation_Sparse, 1) and other downstream jobs hit Unsatisfiable requirements detected / empty intersection because ComponentArrays' RAT-v4 cap excludes the version the monorepo path-sources. This PR unblocks those.

Part of the broader v7 compat-widening set alongside the previous batch (DiffEqCallbacks#303, DiffEqNoiseProcess#271, DiffEqProblemLibrary#182, JumpProcesses#580, ModelingToolkit#4467, StateSelection#71, ParameterizedFunctions#151, SciMLSensitivity#1431, Sundials#526, ODEInterfaceDiffEq#95, DiffEqFinancial#68, DiffEqPhysics#107, MethodOfLines#552, Catalyst#1463, LSODA#79, MultiScaleArrays#129).

Co-Authored-By: Chris Rackauckas accounts@chrisrackauckas.com

Widen the weak-dep compat lines so ComponentArrays can be loaded alongside
RAT v4 and SciMLBase v3 (shipping with OrdinaryDiffEq v7):

- RecursiveArrayTools: "3.8" → "3.8, 4"
- SciMLBase: "2" → "2, 3"

Version bump 0.15.36 → 0.15.37.

Both ext shims are source-level compatible with the new majors:

- `ext/ComponentArraysRecursiveArrayToolsExt.jl` defines a single
  `Base.Array(VA::AVOA{T, N, <:AbstractVector{<:ComponentVector}})` that
  only touches `VA.u` / `getaxes(VA.u[1])` / `reduce(hcat, VA.u)`. None
  of those are affected by the RAT v4 `AbstractVectorOfArray <: AbstractArray`
  change (which rebinds `sol[i]` / `length(sol)` / `eachindex(sol)` /
  `iterate(sol)` / etc. at the top-level AbstractArray interface; the
  underlying `.u` field stays a plain `Vector`).

- `ext/ComponentArraysSciMLBaseExt.jl` defines
  `SciMLBase.getsyms(sol::AbstractODESolution{T,N,<:AbstractVector{<:ComponentArray}})`
  and calls `SciMLBase.has_syms(sol.prob.f)` / `sol.prob.f.syms`. Both
  `getsyms` and `has_syms` remain present and exported from SciMLBase v3
  (verified against `src/symbolic_utils.jl` / `src/scimlfunctions.jl` on
  master). The `f.syms` field is still on `AbstractSciMLFunction`
  subtypes; only the `syms` / `paramsyms` / `indepsym` **kwargs** on the
  SciMLFunction constructors were removed in v3, not the fields
  themselves.

Motivated by SciML/OrdinaryDiffEq.jl#3488: `test (OrdinaryDiffEqDifferentiation_Sparse, 1)`
and other downstream jobs hit "empty intersection" / "no versions left"
resolver errors because ComponentArrays' RAT-v4 cap excludes the version
the monorepo now ships.

Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
@ChrisRackauckas-Claude ChrisRackauckas-Claude changed the base branch from master to main April 22, 2026 11:38
@ChrisRackauckas ChrisRackauckas merged commit 6786e51 into SciML:main Apr 22, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants